Imports System.Xml.Serialization
Imports system.IO


#Region "Data"


<Serializable()> Public Class RaidData
    <XmlAttribute()> Public BaseUrl As String = ""
    <XmlAttribute()> Public Type As StatType

    <XmlAttribute()> Public Region As String = ""
    <XmlAttribute()> Public Realm As String = ""
    <XmlAttribute()> Public RaidName As String = ""
    <XmlAttribute()> Public LastUpdate As Date = "2000/1/1"
    Public Bosses() As BossData

    Public Enum StatType
        StasisCL
        WWS
        WMO
    End Enum
End Class

<Serializable()> Public Class BossData
    <XmlAttribute()> Public Dir As String = ""
    <XmlAttribute()> Public RaidDate As Date = "2000/1/1"
    <XmlAttribute()> Public Boss As String = ""
    <XmlAttribute()> Public Area As String = ""
    <XmlAttribute()> Public Duration As Single = 0.0
    <XmlAttribute()> Public Heroic As HeroicType = HeroicType.Unknown

    <XmlAttribute()> Public RaidDmgOut As Long = 0.0
    <XmlAttribute()> Public RaidDmgIn As Long = 0.0
    <XmlAttribute()> Public RaidHeal As Long = 0.0
    <XmlAttribute()> Public RaidEffHeal As Long = 0.0

    <XmlAttribute()> Public RaidDispel As Integer = 0
    <XmlAttribute()> Public RaidDeath As Integer = 0

    <XmlAttribute()> Public Attempt As Integer = 0
    <XmlAttribute()> Public Killed As Integer = 0

    Public Characters() As CharaData

    Public Enum HeroicType
        Unknown
        Normal
        Heroic
    End Enum
End Class

<Serializable()> Public Class CharaData
    <XmlAttribute()> Public CharaName As String = ""
    <XmlAttribute()> Public CharaID As String = ""
    <XmlAttribute()> Public CharaClass As String = ""
    <XmlAttribute()> Public CharaBuild As String = ""
    <XmlAttribute()> Public CharaPres As Integer = 0   'presence time (sec)
    <XmlAttribute()> Public CharaAct As Integer = 0    'dps activity time (sec)

    <XmlAttribute()> Public DmgOutRate As Single = 0.0
    <XmlAttribute()> Public DmgInRate As Single = 0.0
    <XmlAttribute()> Public EffHealRate As Single = 0.0  'chara eff heal / raid eff heal

    <XmlAttribute()> Public CharaDmgOut As Long = 0
    <XmlAttribute()> Public CharaDmgIn As Long = 0
    <XmlAttribute()> Public CharaHeal As Long = 0
    <XmlAttribute()> Public CharaEffHeal As Long = 0
    <XmlAttribute()> Public OverHeal As Single = 0.0

    <XmlAttribute()> Public CharaDispel As Integer = 0
    <XmlAttribute()> Public CharaDeath As Integer = 0
    Public Heals() As HealData
    Public DamageOut() As DpsData
    Public DamageIn() As DpsData
End Class

<Serializable()> Public Class HealData
    <XmlAttribute()> Public SpellName As String = ""
    <XmlAttribute()> Public Casts As Integer = 0
    <XmlAttribute()> Public Heal As Integer = 0
    <XmlAttribute()> Public EffHeal As Integer = 0
    <XmlAttribute()> Public EffHealRate As Single = 0.0
    <XmlAttribute()> Public Hits As Integer = 0
    <XmlAttribute()> Public Crits As Integer = 0
    <XmlAttribute()> Public Ticks As Integer = 0
    <XmlAttribute()> Public AveHit As Single = 0.0
    <XmlAttribute()> Public AveCrit As Single = 0.0
    <XmlAttribute()> Public AveTick As Single = 0.0
End Class

<Serializable()> Public Class DpsData
    <XmlAttribute()> Public SpellName As String = ""
    <XmlAttribute()> Public Target As String = ""
    <XmlAttribute()> Public Casts As Integer = 0
    <XmlAttribute()> Public Damage As Integer = 0
    <XmlAttribute()> Public DamageRate As Single = 0.0
    <XmlAttribute()> Public Hits As Integer = 0
    <XmlAttribute()> Public Crits As Integer = 0
    <XmlAttribute()> Public Ticks As Integer = 0
    <XmlAttribute()> Public AveHit As Single = 0.0
    <XmlAttribute()> Public AveCrit As Single = 0.0
    <XmlAttribute()> Public AveTick As Single = 0.0
    <XmlAttribute()> Public Avoid As Single = 0.0
End Class

#End Region

